草庐IT

C++ ifstream 到 char *

全部标签

ruby - FileUtils.mv 抛出无效的 char\302 和\255 异常

当我在CodeRunner或命令行中运行以下代码时,出现以下错误;Untitled.rb:25:Invalidchar'\302'inexpressionUntitled.rb:25:Invalidchar'\255'inexpression第25行对应于FileUtils.mv方法的行。ifthe_file.include?"ScreenShot"old_file=Shellwords.escape(homepath+"/Desktop/"+the_file)new_file=Shellwords.escape(screen_shot_folder+"/"+the_file)File

ruby - quote_char 导致适合 ruby​​ CSV 导入

我有一个简单的CSV文件,它使用|(管道)作为引号字符。将我的Rails应用程序从Ruby1.9.2升级到1.9.3后,我收到“CSV::MalformedCSVError:第1行中缺少或杂散的引号”错误。如果我打开vim并替换|使用正引号、单引号甚至“=”,文件工作正常,但是|和*导致错误。有人对可能导致这种情况的原因有任何想法吗?这是一个可以重现错误的简单单行代码:@csv=CSV.read("public/sample_file.csv",{quote_char:'|',headers:false})也在Ruby2.0和irbw/outloadingrails中重现了这一点。编辑

ruby - 向 ruby​​ 1.9.x 添加 char 编码?

如果想在1.9.x中添加一种新的char编码,支持与内置编码相同的编码,您将如何去做?您可以使用ruby​​代码来完成它,还是需要MRI中的C补丁?(我认为这无关紧要,但我对Marc8编码很感兴趣,这是一种仍在图书馆(如书籍)系统和记录中使用的旧式编码。) 最佳答案 我建议看看它是如何在Ruby1.9.2中实现的。基本上深入研究源代码并...:-)这是一个类似的问题:Createownencoding一些关于编码的好文章:http://yehudakatz.com/2010/05/05/ruby-1-9-encodings-a-pr

c++ - 不推荐从字符串常量到 'char*' 的转换

这个问题在这里已经有了答案:关闭10年前.PossibleDuplicate:C++deprecatedconversionfromstringconstantto'char*'我想通过char*将字符串传递给函数。char*Type=newchar[10];Type="Access";//ERROR但是我得到了这个错误:error:deprecatedconversionfromstringconstantto'char*'我该如何解决这个问题? 最佳答案 如果真的要修改Type:char*Type=newchar[10];str

c++ - 不推荐从字符串常量到 'char*' 的转换

这个问题在这里已经有了答案:关闭10年前.PossibleDuplicate:C++deprecatedconversionfromstringconstantto'char*'我想通过char*将字符串传递给函数。char*Type=newchar[10];Type="Access";//ERROR但是我得到了这个错误:error:deprecatedconversionfromstringconstantto'char*'我该如何解决这个问题? 最佳答案 如果真的要修改Type:char*Type=newchar[10];str

c++ - 为什么现在 "{static const char a[]={...}"和 "{const char a[]={...}"之间存在差异?

看看Ccode的这个小片段或C++code在神bolt上……voidb(charconst*c);voida(void){charconstz[]={0xd,0xe,0xa,0xd,0xb,0xe,0xe,0xf,0xa};b(z);}voidc(void){staticcharconstz[]={0xd,0xe,0xa,0xd,0xb,0xe,0xe,0xf,0xa};b(z);}早期版本的gcc将a()和c()都编译成两条指令,加载z的地址,跳转到b。我尝试将所有现代编译器“悲观”a()以“制作堆栈帧,将z复制到堆栈上,调用b,拆除堆栈帧,但将c()保留为两个指令的简单版本。实际上

c++ - 为什么现在 "{static const char a[]={...}"和 "{const char a[]={...}"之间存在差异?

看看Ccode的这个小片段或C++code在神bolt上……voidb(charconst*c);voida(void){charconstz[]={0xd,0xe,0xa,0xd,0xb,0xe,0xe,0xf,0xa};b(z);}voidc(void){staticcharconstz[]={0xd,0xe,0xa,0xd,0xb,0xe,0xe,0xf,0xa};b(z);}早期版本的gcc将a()和c()都编译成两条指令,加载z的地址,跳转到b。我尝试将所有现代编译器“悲观”a()以“制作堆栈帧,将z复制到堆栈上,调用b,拆除堆栈帧,但将c()保留为两个指令的简单版本。实际上

c++ - 传递 const char* 作为模板参数

为什么你不能在这里传递文字字符串?我用一个非常轻微的解决方法让它工作。templatestructlols{lols():i(ptr){}std::stringi;};classfile{public:staticconstchararg[];};decltype(file::arg)file::arg=__FILE__;//Gettingtherighttypedeclarationforthiswasirritating,soIC++0xedit.intmain(){//lolshi;//Error:Atemplateargumentmaynotreferenceanon-exte

c++ - 传递 const char* 作为模板参数

为什么你不能在这里传递文字字符串?我用一个非常轻微的解决方法让它工作。templatestructlols{lols():i(ptr){}std::stringi;};classfile{public:staticconstchararg[];};decltype(file::arg)file::arg=__FILE__;//Gettingtherighttypedeclarationforthiswasirritating,soIC++0xedit.intmain(){//lolshi;//Error:Atemplateargumentmaynotreferenceanon-exte

c++ - 将 char* 转换为字符串 C++

我知道字符串的起始地址(例如,char*buf)和字符串的最大长度intl;(即总字符数是小于或等于l)。从指定的内存段获取string的值最简单的方法是什么?也就是说,如何实现stringretrieveString(char*buf,intl);.EDIT:内存是为写入和读取可变长度字符串而保留的。也就是说,intl;表示的是内存的大小,而不是字符串的长度。 最佳答案 std::stringstr(buffer,buffer+length);或者,如果字符串已经存在:str.assign(buffer,buffer+length